package com.bobo.jdk.bInterface;


/**
 * 函数式编程：Fun
 *
 * 由来：为了让 Lambda 更方便地使用
 *      我们知道使用Lambda表达式的前提是需要有函数式接口，而Lambda表达式使用时不关心接口名，
 * 抽象方法名。只关心抽象方法的参数列表和返回值类型。因此为了让我们使用Lambda表达式更加的方
 * 法，在JDK中提供了大量常用的函数式接口。
 */
public class Demo01Fun {

    public static void main(String[] args) {
        fun1((arr)->{
            int sum = 0 ;
            for (int i : arr) {
                sum += i;
            }
            return sum;
        });
    }

    public static void fun1(Operator1 operator){
        int[] arr = {1,2,3,4};
        int sum = operator.getSum(arr);
        System.out.println("sum = " + sum);
    }
}

/**
 * 函数式接口
 */
@FunctionalInterface
interface Operator1{

    int getSum(int[] arr);
}
